/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GameAI;

import GameObject.Card;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
/**
 * Class Moving controller chịu trách nhiệm di chuyễn các lá bài tự vị trí này tới vị tri kia
 * với mỗi bước đi có một chiệu length
 * card: danh sách các lá bài
 * des : danh sách các điềm di chuyến đến tương ứng
 * @author NGUYEN VAN TAM
 */
public class MovingController {
    public int _length;
    List<Card> _card;
    List<Point> _des;
    
    public void Init(int length, List<Card> card, List<Point> des)
    {
        this._length = length;
        _card = card;
        _des = des;
    }
    
    public void Set(int _length)
    {
        this._length = _length;
    }
    
    //thêm một lá bài muốn đưa vào di chuyễn
    public void AddMovingCard(Card car, Point de)
    {
        _card.add(car);
        _des.add(de);
    }
    
    //di chuyến danh sách các lá bài tơi vị trí mong muốn
    public void Move()
    {
       List<Integer> listCardNotMove = new ArrayList<Integer>();
        
        for(int i = 0; i< _card.size();i++)
        {
            double lengthAB = (Math.sqrt( (_des.get(i).x - _card.get(i).x)*(_des.get(i).x - _card.get(i).x) + 
            (_des.get(i).y - _card.get(i).y)*(_des.get(i).y - _card.get(i).y) ) );
            
            _card.get(i).x += (int)(_length * (_des.get(i).x - _card.get(i).x) / lengthAB);
                   
            
            _card.get(i).y += (int)(_length * (_des.get(i).y - _card.get(i).y) / lengthAB);
                  
            if(_card.get(i).x >= _des.get(i).x || _des.get(i).y >= _card.get(i).y)
            {
                _card.get(i).x = _des.get(i).x ;
                _des.get(i).y = _card.get(i).y;
                listCardNotMove.add(i);
            }
        }
        int n = listCardNotMove.size();
        for(int i = n; i > 0;i--)
        {
            _card.remove(i);
            _des.remove(i);
        }
    }
}
